package cn.tannn.cat.file.server.service;

import cn.tannn.cat.file.server.entity.FileStorageConfig;
import cn.tannn.jdevelops.jpa.service.J2Service;

import java.util.List;

/**
 * 存储器配置
 *
 * @author <a href="https://tannn.cn/">tan</a>
 * @date 2024/3/7 14:12
 */
public interface FileStorageConfigService extends J2Service<FileStorageConfig> {

    /**
     * 删除存储器
     * <pr>
     *     1. 启用中的不允许删除
     *     2. 存在文件数据的不允许删除
     * </pr>
     *
     * @param id id
     * @return 存储器字典值
     */
    void delete(Long id);

    /**
     * 设置master
     * <pr>
     *  会将其他master置为从，因为只允许有一个master
     * </pr>
     * @param id  id
     */
    void changeMaster(Long id);

    /**
     * 获取 master 配置用于文件操作
     * @return FileConfig
     */
    FileStorageConfig findMaster();

    /**
     * 获取所有地配置
     * @return  本地配置
     */
    List<FileStorageConfig> findLocalConfig();


    /**
     * 获取所有地配置
     * @return  minio 配置
     */
    List<FileStorageConfig> findMinioConfig();


    /**
     * 获取所有地配置
     * @return  ftp 配置
     */
    List<FileStorageConfig> findFtpConfig();

    /**
     * 获取所有地配置
     * @return  七牛 配置
     */
    List<FileStorageConfig> findQiNiuConfig();

    /**
     * 新增存储器配置
     * @param config FileConfig
     */
    void append(FileStorageConfig config);

    /**
     * 更新数据
     * @param config FileStorageConfig
     */
    void updateData(FileStorageConfig config);
}
